#include<iostream>
#include<vector>
#include<queue>
#include<cstring>
#include<cmath>
#include<map>
#include<set>
#include<cstdio>
#include<algorithm>
#define debug(a) cout<<#a<<"="<<a<<endl;
using namespace std;
const int maxn=1e5+1000;
typedef int LL;
inline LL read(){LL x=0,f=1;char ch=getchar();	while (!isdigit(ch)){if (ch=='-') f=-1;ch=getchar();}while (isdigit(ch)){x=x*10+ch-48;ch=getchar();}
return x*f;}
LL a[5],b[5];
vector<LL>v,p;
int main(void){
   cin.tie(0);std::ios::sync_with_stdio(false);
   cin>>a[0]>>a[1]>>a[2]>>a[3];
   b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3];
   LL num1=min(a[0],a[1]);
   LL num2=min(a[2],a[3]);
   for(LL i=1;i<=num1*2;i++){
      if(i&1) v.push_back(0);
      else v.push_back(1);
   }
   a[0]-=num1;a[1]-=num1;
   for(LL i=1;i<=num2*2;i++){
      if(i&1) v.push_back(2);
      else v.push_back(3);
   }

   a[2]-=num2;a[3]-=num2;
//   cout<<"a[0]="<<a[0]<<"\n";
//   cout<<"a[1]="<<a[1]<<"\n";
//   cout<<"a[2]="<<a[2]<<"\n";
//   cout<<"a[3]="<<a[3]<<"\n";
   if(!a[0]&&!a[3]){
     LL tot=0;
     while(a[2]||a[1]){
        if(a[2]&&tot==0){
            v.push_back(2);
            a[2]--;
            tot^=1;
        }
        else if(a[1]&&tot==1){
            v.push_back(1);
            a[1]--;
            tot^=1;
        }
        else tot^=1;
     }
     bool flag1=1;
     for(LL i=0;i<v.size()-1;i++){
        if(abs(v[i]-v[i+1])!=1){
            flag1=0;break;
        }
     }
     if(flag1){
        cout<<"YES"<<"\n";
        for(auto i:v){
            cout<<i<<" ";
        }
        cout<<"\n";
        return 0;
     }
   }
//   for(auto i:v){
//            cout<<i<<" ";
//        }
//    cout<<"\n";
   LL x1=min(b[0],b[1]);
   LL x2=min(b[2],b[3]);
   for(LL i=1;i<=x1*2;i++){
       if(i&1) p.push_back(1);
       else p.push_back(0);
   }
   b[0]-=x1;b[1]-=x1;
   if(b[1]) p.push_back(1),b[1]--;
   for(LL i=1;i<=x2*2;i++){
       if(i&1) p.push_back(2);
       else p.push_back(3);
   }
   b[2]-=x2;b[3]-=x2;
   if(!b[3]){
      LL tot=0;
      while(b[2]||b[1]){
        if(b[2]&&tot==0){
            p.push_back(2);b[2]--;
            tot^=1;
        }
        else if(b[1]&&tot==1){
            p.push_back(1);b[1]--;
            tot^=1;
        }
        else tot^=1;
      }
      bool flag1=1;
      for(LL i=0;i<p.size()-1;i++){
        if(abs(p[i]-p[i+1])!=1){
            flag1=0;break;
        }
      }
      if(flag1){
        cout<<"YES"<<"\n";
        for(auto i:p){
            cout<<i<<" ";
        }
        cout<<"\n";
        return 0;
      }
   }
   cout<<"NO"<<"\n";
   return 0;
}
